package com.sjh.lib_app.bean

import androidx.appcompat.app.AlertDialog
import com.blankj.utilcode.util.ActivityUtils
import com.sjh.baseutils.toast
import com.sjh.lib_app.R
import com.sjh.lib_app.UserConfig
import com.sjh.lib_app.event.SignOutEvent
import com.sjh.lib_app.login.LoginServiceWrap
import com.sjh.lib_app.router.route
import org.greenrobot.eventbus.EventBus

/**
 * 服务器返回实体封装类
 * @author ysj
 * @date 2020/7/31 14:41
 */
class Request<T>(
    var is_secret: Int,                  //是否加密 0未加密 1已经加密
    var msg: String? = null,        //消息提示，可能为空
    var code: String = "",              //状态码
    var data: T? = null                 //可能为空，该值是返回的数据，可能是数组也可能是对象
) {
    /**
     * 是否成功
     */
    val isSuccess
        get() = code == "200"

    fun success(data: (data: T?) -> Unit = {}) {
        when (code) {
            "200" -> data(this.data)
        }
    }

    /**
     * @see
     * @param
     * @param data 脱壳后的数据
     */
    fun dispose(
        err: (msg: String?) -> Unit = { it?.toast() }, //code为4xxx错误码时回调
        data: (data: T?) -> Unit = {}//请求成功并且有数据返回时回调
    ) {
        when (code) {
            "200" -> data(this.data)
            // token失效，重新登录
            "400001","400002","401","400003","400006"->{
                msg?:"登录凭证失效".toast()
                route("/ev/login")
            }
            else -> {
                err.invoke(msg)
            }
        }

    }


}